<?php

/*
 * Linea de lista de compras
 */

class LineaLista implements iPersistente, iJson{
    
    private $id, $listacompra, $articulo, $cantidad, $comprado;
    private $broker;
    private $yaPersistido;
    
    public function getComprado(){
        return $this->comprado;
    }
    
    public function setComprado($comprado){
        $this->comprado = $comprado;
    }
    
    public function getId() {
        return $this->id;
    }

    public function setId($id) {
        $this->id = $id;
    }

    public function getListacompra() {
        return $this->listacompra;
    }

    public function setListacompra($listacompra) {
        $this->listacompra = $listacompra;
    }

    public function getArticulo() {
        return $this->articulo;
    }

    public function setArticulo($articulo) {
        $this->articulo = $articulo;
    }

    public function getCantidad() {
        return $this->cantidad;
    }

    public function setCantidad($cantidad) {
        $this->cantidad = $cantidad;
    }

    public function getYaPersistido() {
        return $this->yaPersistido;
    }

    public function setYaPersistido($yaPersistido) {
        $this->yaPersistido = $yaPersistido;
    }

    public function __construct($enJson=null,$i='',$l='',$a='',$c=0,$boolP=false,$comprado=false) {
      if ( $enJson <> null ){
        $this->checkJson($enJson);
        $valores = json_decode($enJson);
        $this->id = $valores->id;
        $this->cantidad = $valores->cantidad;
        $this->yaPersistido = $valores->yaPersistido;
        $this->articulo = new Articulo(json_encode($valores->articulo));
        $this->broker = new Broker();
        $this->comprado = $valores->comprado;
      }else{
        $this->id = $i;
        $this->articulo = $a;
        $this->listacompra = $l;
        $this->cantidad = $c;
        $this->broker = new Broker();
        $this->yaPersistido = $boolP;
        $this->comprado = $comprado;
      }
    }
    
    public function borrar() {
        $this->broker->borrar("DELETE FROM linealista WHERE id = \"$this->id\"");
        $this->articulo->borrar();
    }
    public function guardar() {
        $this->articulo->guardar();
        if ( $this->yaPersistido == 'true' ){
            
            
            $this->broker->guardar("UPDATE linealista set articulo = \"".$this->articulo->getId()."\",
                                                          comprado = ".$this->comprado.",
                                                          cantidad = \"".$this->cantidad."\" WHERE id = \"".$this->id."\"");
        }else{
            $this->broker->guardar("INSERT INTO linealista (listacompra,articulo,cantidad,comprado) VALUES 
                                    (\"".$this->listacompra->getId()."\",\"".$this->articulo->getId()."\",\"".$this->cantidad."\",\"".$this->comprado."\")");
            $this->yaPersistido = true;
            $this->id = $this->broker->UltimoID();
        }        
    }
    public function obtenerTodos() {
        return;
    }
    public function obtenerXid($id) {
        return;
    }

    public function toJson() {
        $ret = new stdClass();
        $ret->id = $this->id;
        $ret->cantidad = $this->cantidad;
        $ret->articulo = $this->articulo->toJson();
        $ret->listacompra = $this->listacompra->getId();
        $ret->yaPersistido = $this->yaPersistido;
        $ret->comprado = $this->comprado;
        return $ret;
    }

    public function checkJson($s) {
        $elem = json_decode($s);
        if ( !isset($elem->id) || !isset($elem->listacompra) || !isset($elem->articulo) ||
                !isset($elem->cantidad) || !isset($elem->yaPersistido) || !isset($elem->comprado)){
            throw new Exception("Obj. LineaLista JSon Invalido");
        }
    }
}
?>
